package fr.afcepf.atod20.ria.services;

import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import fr.afcepf.atod20.model.dao.DaoPersonneImpl;
import fr.afcepf.atod20.model.dao.IDaoPersonne;
import fr.afcepf.atod20.model.entity.Personne;

@Path("/")
public class ServicePersonne {
	IDaoPersonne dao = new DaoPersonneImpl();
	@Path("/ajouter")
	@Consumes(MediaType.APPLICATION_JSON)
	@Produces(MediaType.APPLICATION_JSON)
	@POST
	public PersonneDTO ajouter (PersonneDTO persDto) {
		Personne pers = dtoToEntity(persDto);
		pers = dao.ajouter(pers);
		persDto.setId(pers.getId());
		return persDto;
	}
	@Path("/chercher/{nom}")
	@GET
	@Produces(MediaType.APPLICATION_JSON)
	public List<PersonneDTO> chercher(
			@PathParam(value="nom")String nom){
		List<Personne> liste = dao.rechercher(nom);
		List<PersonneDTO> retour = new ArrayList<>();
		for (Personne personne : liste) {
			retour.add(entityToDto(personne));
		}
		return retour;
	}
	@Path("/supprimer/{id}")
	@GET
	@Produces(MediaType.TEXT_XML)
	public boolean supprimer (@PathParam(value="id") int id) {
		return dao.supprimer(id);
	}
	private Personne dtoToEntity(PersonneDTO persDto) {
		return new Personne(persDto.getId(), 
				persDto.getNom(), persDto.getPrenom(), 
				persDto.getMail(), persDto.getMdp(), 
				persDto.getNaissance());
	}
	private PersonneDTO entityToDto(Personne pers) {
		return new PersonneDTO(pers.getId(), 
				pers.getNom(), pers.getPrenom(), 
				pers.getMail(), pers.getMdp(), 
				pers.getDateNaissance());
	}
	
	@Path("/testFramework")
	@POST
	@Produces(MediaType.TEXT_PLAIN)
	public String  testFramework() {
		return "succes";
		
	}
}
